<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>闭包</title>
</head>
<body>
    <script>

/**
 * 
闭包的应用场景
闭包广泛应用于多种前端场景，如：
异步编程：在处理异步操作时，闭包可以帮助你维护函数的作用域，确保变量不会在异步操作之间相互干扰。
模块化和封装：闭包可以用来创建模块或组件，这些模块或组件有自己的私有变量和方法。
优化性能：闭包可以减少全局变量的数量，从而提高代码的效率和可维护性。
闭包指的是一个函数及其捆绑的周边环境状态的组合

如何使用闭包
要创建一个闭包，只需在一个函数内部定义另一个函数，并在外部调用内部函数即可。
内部函数会捕获外部函数的作用域，形成闭包。例如，可以在一个函数内部定义一个函数，
并将这个内部函数作为返回值，这样就可以在外部访问内部函数的局部变量
 * 
 **/

        function makeCounter(initialValue) {
            let count = initialValue;
            return function() {
                count++;
                return count;
            };
        }

        const counter = makeCounter(2);
        console.log(counter()); // 输出: 2
        console.log(counter()); // 输出: 3
        console.log(counter()); // 输出: 4
    </script>
</body>
</html>